1. Field of the Invention
The invention relates generally to serial attached SCSI (“SAS”) domains and more specifically to apparatus and methods for a simplified multi-client initiator/target within a SAS device providing reduced features coupled with reduced cost and complexity.
2. Discussion of Related Art
Small Computer Systems Interface (“SCSI”) is a set of American National Standards Institute (“ANSI”) standard electronic interface specifications that allow, for example, computers to communicate with peripheral hardware. Common SCSI compatible peripheral devices may include: disk drives, tape drives, CD drives (“CD-ROM”, “CD-RW”, etc), DVD drives, printers and scanners. SCSI as originally created included both a command/response data structure specification and an interface and protocol standard for a parallel bus structure for attachment of devices. SCSI has evolved from exclusively parallel interfaces to include both parallel and serial interfaces. “SCSI” is now generally understood as referring either to the communication transport media (parallel bus structures and various serial transports) or to a plurality of primary commands common to most devices and command sets to meet the needs of specific device types as well as a variety of interface standards and protocols.
The collection of primary commands and other command sets may be used with SCSI parallel interfaces as well as with serial interfaces. The serial interface transport media standards that support SCSI command processing include: Fibre Channel, Serial Bus Protocol (used with the Institute of Electrical and Electronics Engineers 1394 FireWire physical protocol; “IEEE 1394”) and the Serial Storage Protocol (SSP).
SCSI interface transports and commands are also used to interconnect networks of storage devices with processing devices. For example, serial SCSI transport media and protocols such as Serial Attached SCSI (“SAS”) and Serial Advanced Technology Attachment (“SATA”) may be used in such networks. These applications are often referred to as storage networks. Those skilled in the art are familiar with SAS and SATA standards as well as other SCSI related specifications and standards. Information about such interfaces and commands is generally obtainable at the websites www.t10.org, www.t13.org, and www.serialata.org.
Such SCSI storage networks are often used in large storage systems having a plurality of disk drives to store data for organizations and/or businesses. The network architecture allows storage devices to be physically dispersed in an enterprise while continuing to directly support SCSI commands directly. This architecture allows for distribution of the storage components in an enterprise without the need for added overhead in converting storage requests from SCSI commands into other network commands and then back into lower level SCSI storage related commands.
A SAS network typically comprises one or more SAS initiators coupled to one or more SAS targets often via one or more SAS expanders. In general, as is common in all SCSI communications, SAS initiators initiate communications with SAS targets. The expanders expand the number of ports of a SAS network domain used to interconnect SAS initiators and SAS targets (collectively referred to as SAS devices or SAS device controllers).
In general, a SAS initiator directs information to a SAS target device through ports of one or more SAS expanders in the SAS domain. A “port” in SAS terminology is a logical concept. A port may comprise one or more physical links in a SAS domain. Such physical links are often referred to as PHYs in the terminology of SAS domains. A port may use a single PHY or, if the port is configured as a wide port, may use multiple PHYs logically grouped to provide higher bandwidth.
The SAS standard defines the Serial Attached SCSI (SAS) interconnect and three transport protocols that use the SAS interconnect: a) Serial SCSI Protocol (SSP): a mapping of SCSI supporting multiple initiators and targets (see, e.g., section 7.16 of the SAS specifications); b) Serial ATA Tunneled Protocol (STP): a mapping of Serial ATA expanded to support multiple initiators and targets (see, e.g., section 7.17 of the SAS specifications); and c) Serial Management Protocol (SMP): a management protocol (see, e.g., section 7.18 of the SAS specifications).
Each defined protocol includes initiator and target aspects of the defined exchanges. In a number of particular device applications, the full richness and flexibility of an SSP, STP, and/or SMP initiator operable in accordance with the respective link layer specifications is not required. For example, in a SAS expander device that utilizes STP exchanges only for limited management of SATA devices attached to the expander or attached downstream from the expander, a fully featured STP initiator capability is not required. Rather, only a relatively small subset of the full STP feature set is used for such a limited management purpose. In like manner, other management functions within a SAS device may use limited features of the full richness of the SSP and SMP protocols. A SAS expander is an example of such a SAS device where limited aspects of each protocol may be required for certain management and administrative features implemented within the expander in dealing with attached devices.
However, current initiator and target circuits provide only a fully featured initiator and/or target capability intended primarily for other applications requiring full featured SAS device support for all SAS related protocols. Such a fully featured SAS initiator including SSP/STP/SMP initiator/target features is costly and complex in such an application though only a small fraction of the features are actually required. Further, where multiple such initiator/target circuits are required within a SAS device (such as a SAS expander), the cost and complexity is multiplied by the total number of such managerial ports required.
It is evident from the above discussion that a need exists for a simplified initiator and target circuit supporting multiple simplified protocols useful in applications that do not require fully featured initiator/target capabilities.